package com.ylr.basic.framework.service;

import java.util.Map;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-02-28 14:15:18
 * className: AesService AES加解密服务接口
 * version: 1.0
 * description:
 */
public interface AesService {

    /**
     * 加密
     * @param plainText 明文
     * @return 16进制密文
     */
    String encryptToHex(String plainText);

    /**
     * 批量明文加密操作
     * 生成十六进制密文
     * @param paramMap 参数映射
     * @return 结果映射
     */
    Map<?, String> batchEncryptToHex(Map<?, String> paramMap);

    /**
     * 解密
     * @param cipherText 16进制密文
     * @return 明文
     */
    String decodeHex(String cipherText);

    /**
     * 半解密
     * @param cipherText 16进制密文
     * @param start      脱敏开始下标
     * @param end        脱敏结束下标
     * @return 脱敏后明文
     */
    String subDecodeHex(String cipherText, Integer start, Integer end);

    /**
     * 批量解密
     * @param paramMap 参数映射集合
     * @return 解密结果映射
     */
    Map<?, String> batchDecodeHex(Map<?, String> paramMap);

    /**
     * 加密
     * @param plainText 明文
     * @return Base64密文
     */
    String encryptToBase64(String plainText);

    /**
     * 解密
     * @param cipherText Base64密文
     * @return 明文
     */
    String decodeBase64(String cipherText);

    /**
     * 半解密
     * @param cipherText Base64密文
     * @param start      脱敏开始下标
     * @param end        脱敏结束下标
     * @return 脱敏后明文
     */
    String subDecodeBase64(String cipherText, Integer start, Integer end);

    /**
     * 批量解密
     * @param paramMap 参数映射集合
     * @return 解密结果映射
     */
    Map<?, String> batchDecodeBase64(Map<?, String> paramMap);

}
